package com;

/*
* 装箱  拆箱 : 是指基本数据类型和包装类之间的相互转换过程。
* java 为了方便对基本数据类型进行面向对象操作，引入了包装类  wrapper class。
* 装箱是指将基本数据类型转换为其对应的包装类对象。例如，将 int 类型转换为 Integer 类型。
* Java 提供了自动装箱（Autoboxing）机制，使得这种转换在大多数情况下自动完成。
*
* byte ↔ Byte
* short ↔ Short
* int ↔ Integer
* long ↔ Long
* float ↔ Float
* double ↔ Double
* char ↔ Character
* boolean ↔ Boolean
* */

import java.util.ArrayList;
import java.util.List;

public class wrapper_class {
    public static void main(String[] args) {
        int primitiveInt = 43; // 基本类型
        Integer boxedInt = primitiveInt; // 自动装箱，int 转化为 integer 对象

        System.out.println("装箱后的值：" + boxedInt);

        Integer boxedInt2 = 324; // 自动装箱， Integer 对象
        int primitiveInt2 = boxedInt2; // 自动拆箱，integer 对象 转化为 int 类型
        System.out.println("拆箱后的值：" + primitiveInt2);


        List<Integer> numbers = new ArrayList<>(); // 只能存储 Integer 对象

        // 自动装箱: 基本类型 int 被装箱为Integer 对象
        numbers.add(10);
        numbers.add(23);

        // 自动拆箱： 从Integer 对象拆箱为 int 类型
        int number = numbers.get(0); // Integer -> int
        System.out.println("集合中第一个数字： " + number);

    }
}

/*
*   拆箱和装箱的场景场景
* 在处理集合类 List、Set 时，因为这些集合类只能存储对象，不能直接存储基本数据类型。
* */